﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Domain;
using Repository;
using System.Data.SqlClient;
using System.Data;


namespace Controller
{
    public class ProdutoController
    {
        private ProdutoDB produtoDb = new ProdutoDB(ConnectionFactory.getConnetcion());
        

        public void Connect(SqlConnection connection)
        {
            try
            {
               produtoDb.putConnection(connection);
            }
            catch (SqlException sqlex)
            {
            }
        }

        public DataTable PreencheDataGridViewProduto() 
        {
            DataTable dt  = new DataTable();
            produtoDb.openConnection();
            dt = produtoDb.AuxDataGridProduto();
            produtoDb.closeConnection();
            return dt;
        }

        public bool cadastrarProduto(Produto produto) 
        {
            Boolean result;
            try
            {
                IQuery<Produto> consult = produtoDb;
                consult.openConnection();
                result = consult.save(produto);
                consult.closeConnection();
                return result;
            }
            catch (SqlException sqlex) 
            {
                return false;
            }
        }

        public bool atualizarProduto(Produto produto)
        {
            Boolean result;
            try
            {
                IQuery<Produto> consult = produtoDb;
                consult.openConnection();
                result = consult.update(produto);
                consult.closeConnection();
                return result;
            }
            catch (SqlException sqlex)
            {
                return false;
            }
        }

        public bool deletarProduto(Produto produto)
        {
            Boolean result;
            try
            {
                IQuery<Produto> consult = produtoDb;
                consult.openConnection();
                result = consult.delete(produto);
                consult.closeConnection();
                return result;
            }
            catch (SqlException sqlex)
            {
                return false;
            }
        }


        public List<Produto> listarProdutos()
        {
            List<Produto> produtos = new List<Produto>();
            try
            {
                IQuery<Produto> consult = produtoDb;
                consult.openConnection();
                produtos = consult.getAllList();
                consult.closeConnection();
                return produtos;
            }
            catch (SqlException sqlex)
            {
                return null;
            }
        }

        public List<Produto> buscarProdutos(Produto produto)
        {
            List<Produto> produtos = new List<Produto>();
            try
            {
                IQuery<Produto> consult = produtoDb;
                consult.openConnection();
                produtos = consult.getListById(produto.Id_produto);
                consult.closeConnection();
                return produtos;
            }
            catch (SqlException sqlex)
            {
                return null;
            }
        }


    }
}
